﻿// ReSharper disable ArrangeObjectCreationWhenTypeEvident
// ReSharper disable BuiltInTypeReferenceStyle
// ReSharper disable ConvertToAutoProperty
// ReSharper disable InconsistentNaming
// ReSharper disable PartialTypeWithSinglePart
// ReSharper disable PreferConcreteValueOverDefault
// ReSharper disable RedundantNameQualifier
// ReSharper disable SuggestVarOrType_SimpleTypes
// ReSharper disable UnusedMember.Global
// ReSharper disable UnusedMethodReturnValue.Local
// ReSharper disable UnusedType.Global

// StarWarsIntrospectionClient

// <auto-generated/>
#nullable enable annotations
#nullable disable warnings

namespace Microsoft.Extensions.DependencyInjection
{
    // StrawberryShake.CodeGeneration.CSharp.Generators.DependencyInjectionGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public static partial class StarWarsIntrospectionClientServiceCollectionExtensions
    {
        public static global::StrawberryShake.IClientBuilder<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.StarWarsIntrospectionClientStoreAccessor> AddStarWarsIntrospectionClient(this global::Microsoft.Extensions.DependencyInjection.IServiceCollection services, global::StrawberryShake.ExecutionStrategy strategy = global::StrawberryShake.ExecutionStrategy.NetworkOnly)
        {
            var serviceCollection = new global::Microsoft.Extensions.DependencyInjection.ServiceCollection();
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp =>
            {
                ConfigureClientDefault(sp, serviceCollection, strategy);
                return new ClientServiceProvider(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(serviceCollection));
            });
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.StarWarsIntrospectionClientStoreAccessor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationStore>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IEntityStore>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IEntityIdSerializer>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.IOperationRequestFactory>>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.IOperationResultDataFactory>>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp))));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IntrospectionQueryQuery>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.StarWarsIntrospectionClient>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IStarWarsIntrospectionClient>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
            return new global::StrawberryShake.ClientBuilder<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.StarWarsIntrospectionClientStoreAccessor>("StarWarsIntrospectionClient", services, serviceCollection);
        }

        private static global::Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureClientDefault(global::System.IServiceProvider parentServices, global::Microsoft.Extensions.DependencyInjection.ServiceCollection services, global::StrawberryShake.ExecutionStrategy strategy = global::StrawberryShake.ExecutionStrategy.NetworkOnly)
        {
            global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions.TryAddSingleton<global::StrawberryShake.IEntityStore, global::StrawberryShake.EntityStore>(services);
            global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions.TryAddSingleton<global::StrawberryShake.IOperationStore>(services, sp => new global::StrawberryShake.OperationStore(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IEntityStore>(sp)));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Transport.Http.IHttpConnection>(services, sp =>
            {
                var clientFactory = global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Net.Http.IHttpClientFactory>(parentServices);
                return new global::StrawberryShake.Transport.Http.HttpConnection(() => clientFactory.CreateClient("StarWarsIntrospectionClient"));
            });
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKindSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.StringSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.BooleanSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.ByteSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.ShortSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.IntSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.LongSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.FloatSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.DecimalSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.UrlSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.UUIDSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.IdSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.DateTimeSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.DateSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.LocalDateSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.LocalDateTimeSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.LocalTimeSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.ByteArraySerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.TimeSpanSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.JsonSerializer>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializerResolver>(services, sp => new global::StrawberryShake.Serialization.SerializerResolver(global::System.Linq.Enumerable.Concat(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.Serialization.ISerializer>>(parentServices), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.Serialization.ISerializer>>(sp))));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.IntrospectionQueryResultFactory>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultDataFactory<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>>(sp));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationRequestFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery>(sp));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.IntrospectionQueryBuilder>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationExecutor<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>>(services, sp => new global::StrawberryShake.OperationExecutor<global::System.Text.Json.JsonDocument, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.Transport.Http.IHttpConnection>(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>>(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IResultPatcher<global::System.Text.Json.JsonDocument>>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationStore>(sp), strategy));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IResultPatcher<global::System.Text.Json.JsonDocument>, global::StrawberryShake.Json.JsonResultPatcher>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IntrospectionQueryQuery>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IntrospectionQueryQuery>(sp));
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IEntityIdSerializer, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.StarWarsIntrospectionClientEntityIdFactory>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.StarWarsIntrospectionClient>(services);
            global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IStarWarsIntrospectionClient>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.StarWarsIntrospectionClient>(sp));
            return services;
        }

        private sealed class ClientServiceProvider : System.IServiceProvider, System.IDisposable
        {
            private readonly System.IServiceProvider _provider;
            public ClientServiceProvider(System.IServiceProvider provider)
            {
                _provider = provider;
            }

            public object? GetService(System.Type serviceType)
            {
                return _provider.GetService(serviceType);
            }

            public void Dispose()
            {
                if (_provider is System.IDisposable d)
                {
                    d.Dispose();
                }
            }
        }
    }
}

namespace StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection
{
    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQueryResult : global::System.IEquatable<IntrospectionQueryResult>, IIntrospectionQueryResult
    {
        public IntrospectionQueryResult(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema __schema)
        {
            this.__schema = __schema;
        }

        /// <summary>
        /// Access the current type schema of this server.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema __schema { get; }

        public virtual global::System.Boolean Equals(IntrospectionQueryResult? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (__schema.Equals(other.__schema));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQueryResult)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * __schema.GetHashCode();
                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema___Schema : global::System.IEquatable<IntrospectionQuery___schema___Schema>, IIntrospectionQuery___schema___Schema
    {
        public IntrospectionQuery___schema___Schema(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_QueryType queryType, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_MutationType? mutationType, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_SubscriptionType? subscriptionType, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types> types, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives> directives)
        {
            QueryType = queryType;
            MutationType = mutationType;
            SubscriptionType = subscriptionType;
            Types = types;
            Directives = directives;
        }

        /// <summary>
        /// The type that query operations will be rooted at.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_QueryType QueryType { get; }
        /// <summary>
        /// If this server supports mutation, the type that mutation operations will be rooted at.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_MutationType? MutationType { get; }
        /// <summary>
        /// If this server support subscription, the type that subscription operations will be rooted at.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_SubscriptionType? SubscriptionType { get; }
        /// <summary>
        /// A list of all types supported by this server.
        /// </summary>
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types> Types { get; }
        /// <summary>
        /// A list of all directives supported by this server.
        /// </summary>
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives> Directives { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema___Schema? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (QueryType.Equals(other.QueryType)) && ((MutationType is null && other.MutationType is null) || MutationType != null && MutationType.Equals(other.MutationType)) && ((SubscriptionType is null && other.SubscriptionType is null) || SubscriptionType != null && SubscriptionType.Equals(other.SubscriptionType)) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(Types, other.Types) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(Directives, other.Directives);
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema___Schema)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * QueryType.GetHashCode();
                if (MutationType != null)
                {
                    hash ^= 397 * MutationType.GetHashCode();
                }

                if (SubscriptionType != null)
                {
                    hash ^= 397 * SubscriptionType.GetHashCode();
                }

                foreach (var Types_elm in Types)
                {
                    hash ^= 397 * Types_elm.GetHashCode();
                }

                foreach (var Directives_elm in Directives)
                {
                    hash ^= 397 * Directives_elm.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_QueryType___Type : global::System.IEquatable<IntrospectionQuery___schema_QueryType___Type>, IIntrospectionQuery___schema_QueryType___Type
    {
        public IntrospectionQuery___schema_QueryType___Type(global::System.String? name)
        {
            Name = name;
        }

        public global::System.String? Name { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_QueryType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_QueryType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_MutationType___Type : global::System.IEquatable<IntrospectionQuery___schema_MutationType___Type>, IIntrospectionQuery___schema_MutationType___Type
    {
        public IntrospectionQuery___schema_MutationType___Type(global::System.String? name)
        {
            Name = name;
        }

        public global::System.String? Name { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_MutationType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_MutationType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_SubscriptionType___Type : global::System.IEquatable<IntrospectionQuery___schema_SubscriptionType___Type>, IIntrospectionQuery___schema_SubscriptionType___Type
    {
        public IntrospectionQuery___schema_SubscriptionType___Type(global::System.String? name)
        {
            Name = name;
        }

        public global::System.String? Name { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_SubscriptionType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_SubscriptionType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types___Type : global::System.IEquatable<IntrospectionQuery___schema_Types___Type>, IIntrospectionQuery___schema_Types___Type
    {
        public IntrospectionQuery___schema_Types___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::System.String? description, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields>? fields, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields>? inputFields, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces>? interfaces, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_EnumValues>? enumValues, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_PossibleTypes>? possibleTypes)
        {
            Kind = kind;
            Name = name;
            Description = description;
            Fields = fields;
            InputFields = inputFields;
            Interfaces = interfaces;
            EnumValues = enumValues;
            PossibleTypes = possibleTypes;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields>? Fields { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields>? InputFields { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces>? Interfaces { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_EnumValues>? EnumValues { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_PossibleTypes>? PossibleTypes { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(Fields, other.Fields) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(InputFields, other.InputFields) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(Interfaces, other.Interfaces) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(EnumValues, other.EnumValues) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(PossibleTypes, other.PossibleTypes);
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                if (Fields != null)
                {
                    foreach (var Fields_elm in Fields)
                    {
                        hash ^= 397 * Fields_elm.GetHashCode();
                    }
                }

                if (InputFields != null)
                {
                    foreach (var InputFields_elm in InputFields)
                    {
                        hash ^= 397 * InputFields_elm.GetHashCode();
                    }
                }

                if (Interfaces != null)
                {
                    foreach (var Interfaces_elm in Interfaces)
                    {
                        hash ^= 397 * Interfaces_elm.GetHashCode();
                    }
                }

                if (EnumValues != null)
                {
                    foreach (var EnumValues_elm in EnumValues)
                    {
                        hash ^= 397 * EnumValues_elm.GetHashCode();
                    }
                }

                if (PossibleTypes != null)
                {
                    foreach (var PossibleTypes_elm in PossibleTypes)
                    {
                        hash ^= 397 * PossibleTypes_elm.GetHashCode();
                    }
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
    /// 
    /// In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Directives___Directive : global::System.IEquatable<IntrospectionQuery___schema_Directives___Directive>, IIntrospectionQuery___schema_Directives___Directive
    {
        public IntrospectionQuery___schema_Directives___Directive(global::System.String name, global::System.String? description, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives_Args> args, global::System.Boolean onOperation, global::System.Boolean onFragment, global::System.Boolean onField)
        {
            Name = name;
            Description = description;
            Args = args;
            OnOperation = onOperation;
            OnFragment = onFragment;
            OnField = onField;
        }

        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives_Args> Args { get; }
        public global::System.Boolean OnOperation { get; }
        public global::System.Boolean OnFragment { get; }
        public global::System.Boolean OnField { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Directives___Directive? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(Args, other.Args) && global::System.Object.Equals(OnOperation, other.OnOperation) && global::System.Object.Equals(OnFragment, other.OnFragment) && global::System.Object.Equals(OnField, other.OnField);
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Directives___Directive)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Name.GetHashCode();
                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                foreach (var Args_elm in Args)
                {
                    hash ^= 397 * Args_elm.GetHashCode();
                }

                hash ^= 397 * OnOperation.GetHashCode();
                hash ^= 397 * OnFragment.GetHashCode();
                hash ^= 397 * OnField.GetHashCode();
                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Fields___Field : global::System.IEquatable<IntrospectionQuery___schema_Types_Fields___Field>, IIntrospectionQuery___schema_Types_Fields___Field
    {
        public IntrospectionQuery___schema_Types_Fields___Field(global::System.String name, global::System.String? description, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Args> args, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Type type, global::System.Boolean isDeprecated, global::System.String? deprecationReason)
        {
            Name = name;
            Description = description;
            Args = args;
            Type = type;
            IsDeprecated = isDeprecated;
            DeprecationReason = deprecationReason;
        }

        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Args> Args { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Type Type { get; }
        public global::System.Boolean IsDeprecated { get; }
        public global::System.String? DeprecationReason { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Fields___Field? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && global::StrawberryShake.Internal.ComparisonHelper.SequenceEqual(Args, other.Args) && Type.Equals(other.Type) && global::System.Object.Equals(IsDeprecated, other.IsDeprecated) && ((DeprecationReason is null && other.DeprecationReason is null) || DeprecationReason != null && DeprecationReason.Equals(other.DeprecationReason));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Fields___Field)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Name.GetHashCode();
                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                foreach (var Args_elm in Args)
                {
                    hash ^= 397 * Args_elm.GetHashCode();
                }

                hash ^= 397 * Type.GetHashCode();
                hash ^= 397 * IsDeprecated.GetHashCode();
                if (DeprecationReason != null)
                {
                    hash ^= 397 * DeprecationReason.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_InputFields___InputValue : global::System.IEquatable<IntrospectionQuery___schema_Types_InputFields___InputValue>, IIntrospectionQuery___schema_Types_InputFields___InputValue
    {
        public IntrospectionQuery___schema_Types_InputFields___InputValue(global::System.String name, global::System.String? description, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type type, global::System.String? defaultValue)
        {
            Name = name;
            Description = description;
            Type = type;
            DefaultValue = defaultValue;
        }

        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type Type { get; }
        /// <summary>
        /// A GraphQL-formatted string representing the default value for this input value.
        /// </summary>
        public global::System.String? DefaultValue { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_InputFields___InputValue? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && Type.Equals(other.Type) && ((DefaultValue is null && other.DefaultValue is null) || DefaultValue != null && DefaultValue.Equals(other.DefaultValue));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_InputFields___InputValue)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Name.GetHashCode();
                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                hash ^= 397 * Type.GetHashCode();
                if (DefaultValue != null)
                {
                    hash ^= 397 * DefaultValue.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Interfaces___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Interfaces___Type>, IIntrospectionQuery___schema_Types_Interfaces___Type
    {
        public IntrospectionQuery___schema_Types_Interfaces___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Interfaces___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Interfaces___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_EnumValues___EnumValue : global::System.IEquatable<IntrospectionQuery___schema_Types_EnumValues___EnumValue>, IIntrospectionQuery___schema_Types_EnumValues___EnumValue
    {
        public IntrospectionQuery___schema_Types_EnumValues___EnumValue(global::System.String name, global::System.String? description, global::System.Boolean isDeprecated, global::System.String? deprecationReason)
        {
            Name = name;
            Description = description;
            IsDeprecated = isDeprecated;
            DeprecationReason = deprecationReason;
        }

        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::System.Boolean IsDeprecated { get; }
        public global::System.String? DeprecationReason { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_EnumValues___EnumValue? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && global::System.Object.Equals(IsDeprecated, other.IsDeprecated) && ((DeprecationReason is null && other.DeprecationReason is null) || DeprecationReason != null && DeprecationReason.Equals(other.DeprecationReason));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_EnumValues___EnumValue)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Name.GetHashCode();
                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                hash ^= 397 * IsDeprecated.GetHashCode();
                if (DeprecationReason != null)
                {
                    hash ^= 397 * DeprecationReason.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_PossibleTypes___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_PossibleTypes___Type>, IIntrospectionQuery___schema_Types_PossibleTypes___Type
    {
        public IntrospectionQuery___schema_Types_PossibleTypes___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_PossibleTypes___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_PossibleTypes___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Directives_Args___InputValue : global::System.IEquatable<IntrospectionQuery___schema_Directives_Args___InputValue>, IIntrospectionQuery___schema_Directives_Args___InputValue
    {
        public IntrospectionQuery___schema_Directives_Args___InputValue(global::System.String name, global::System.String? description, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type type, global::System.String? defaultValue)
        {
            Name = name;
            Description = description;
            Type = type;
            DefaultValue = defaultValue;
        }

        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type Type { get; }
        /// <summary>
        /// A GraphQL-formatted string representing the default value for this input value.
        /// </summary>
        public global::System.String? DefaultValue { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Directives_Args___InputValue? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && Type.Equals(other.Type) && ((DefaultValue is null && other.DefaultValue is null) || DefaultValue != null && DefaultValue.Equals(other.DefaultValue));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Directives_Args___InputValue)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Name.GetHashCode();
                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                hash ^= 397 * Type.GetHashCode();
                if (DefaultValue != null)
                {
                    hash ^= 397 * DefaultValue.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Fields_Args___InputValue : global::System.IEquatable<IntrospectionQuery___schema_Types_Fields_Args___InputValue>, IIntrospectionQuery___schema_Types_Fields_Args___InputValue
    {
        public IntrospectionQuery___schema_Types_Fields_Args___InputValue(global::System.String name, global::System.String? description, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type type, global::System.String? defaultValue)
        {
            Name = name;
            Description = description;
            Type = type;
            DefaultValue = defaultValue;
        }

        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type Type { get; }
        /// <summary>
        /// A GraphQL-formatted string representing the default value for this input value.
        /// </summary>
        public global::System.String? DefaultValue { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Fields_Args___InputValue? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Name.Equals(other.Name)) && ((Description is null && other.Description is null) || Description != null && Description.Equals(other.Description)) && Type.Equals(other.Type) && ((DefaultValue is null && other.DefaultValue is null) || DefaultValue != null && DefaultValue.Equals(other.DefaultValue));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Fields_Args___InputValue)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Name.GetHashCode();
                if (Description != null)
                {
                    hash ^= 397 * Description.GetHashCode();
                }

                hash ^= 397 * Type.GetHashCode();
                if (DefaultValue != null)
                {
                    hash ^= 397 * DefaultValue.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Fields_Type___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Fields_Type___Type>, IIntrospectionQuery___schema_Types_Fields_Type___Type
    {
        public IntrospectionQuery___schema_Types_Fields_Type___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Fields_Type___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Fields_Type___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_InputFields_Type___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_InputFields_Type___Type>, IIntrospectionQuery___schema_Types_InputFields_Type___Type
    {
        public IntrospectionQuery___schema_Types_InputFields_Type___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_InputFields_Type___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_InputFields_Type___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Interfaces_OfType___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Interfaces_OfType___Type>, IIntrospectionQuery___schema_Types_Interfaces_OfType___Type
    {
        public IntrospectionQuery___schema_Types_Interfaces_OfType___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Interfaces_OfType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Interfaces_OfType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_PossibleTypes_OfType___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_PossibleTypes_OfType___Type>, IIntrospectionQuery___schema_Types_PossibleTypes_OfType___Type
    {
        public IntrospectionQuery___schema_Types_PossibleTypes_OfType___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_PossibleTypes_OfType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_PossibleTypes_OfType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Directives_Args_Type___Type : global::System.IEquatable<IntrospectionQuery___schema_Directives_Args_Type___Type>, IIntrospectionQuery___schema_Directives_Args_Type___Type
    {
        public IntrospectionQuery___schema_Directives_Args_Type___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Directives_Args_Type___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Directives_Args_Type___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Fields_Args_Type___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Fields_Args_Type___Type>, IIntrospectionQuery___schema_Types_Fields_Args_Type___Type
    {
        public IntrospectionQuery___schema_Types_Fields_Args_Type___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Fields_Args_Type___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Fields_Args_Type___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Fields_Type_OfType___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Fields_Type_OfType___Type>, IIntrospectionQuery___schema_Types_Fields_Type_OfType___Type
    {
        public IntrospectionQuery___schema_Types_Fields_Type_OfType___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Fields_Type_OfType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Fields_Type_OfType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_InputFields_Type_OfType___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_InputFields_Type_OfType___Type>, IIntrospectionQuery___schema_Types_InputFields_Type_OfType___Type
    {
        public IntrospectionQuery___schema_Types_InputFields_Type_OfType___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_InputFields_Type_OfType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_InputFields_Type_OfType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type>, IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type
    {
        public IntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType? ofType)
        {
            Kind = kind;
            Name = name;
            OfType = ofType;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType? OfType { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name)) && ((OfType is null && other.OfType is null) || OfType != null && OfType.Equals(other.OfType));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                if (OfType != null)
                {
                    hash ^= 397 * OfType.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultTypeGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type : global::System.IEquatable<IntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type>, IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type
    {
        public IntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind kind, global::System.String? name)
        {
            Kind = kind;
            Name = name;
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }

        public virtual global::System.Boolean Equals(IntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type? other)
        {
            if (ReferenceEquals(null, other))
            {
                return false;
            }

            if (ReferenceEquals(this, other))
            {
                return true;
            }

            if (other.GetType() != GetType())
            {
                return false;
            }

            return (Kind.Equals(other.Kind)) && ((Name is null && other.Name is null) || Name != null && Name.Equals(other.Name));
        }

        public override global::System.Boolean Equals(global::System.Object? obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return false;
            }

            if (ReferenceEquals(this, obj))
            {
                return true;
            }

            if (obj.GetType() != GetType())
            {
                return false;
            }

            return Equals((IntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type)obj);
        }

        public override global::System.Int32 GetHashCode()
        {
            unchecked
            {
                int hash = 5;
                hash ^= 397 * Kind.GetHashCode();
                if (Name != null)
                {
                    hash ^= 397 * Name.GetHashCode();
                }

                return hash;
            }
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQueryResult
    {
        /// <summary>
        /// Access the current type schema of this server.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema __schema { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema
    {
        /// <summary>
        /// The type that query operations will be rooted at.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_QueryType QueryType { get; }
        /// <summary>
        /// If this server supports mutation, the type that mutation operations will be rooted at.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_MutationType? MutationType { get; }
        /// <summary>
        /// If this server support subscription, the type that subscription operations will be rooted at.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_SubscriptionType? SubscriptionType { get; }
        /// <summary>
        /// A list of all types supported by this server.
        /// </summary>
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types> Types { get; }
        /// <summary>
        /// A list of all directives supported by this server.
        /// </summary>
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives> Directives { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema___Schema : IIntrospectionQuery___schema
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_QueryType
    {
        public global::System.String? Name { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_QueryType___Type : IIntrospectionQuery___schema_QueryType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_MutationType
    {
        public global::System.String? Name { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_MutationType___Type : IIntrospectionQuery___schema_MutationType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_SubscriptionType
    {
        public global::System.String? Name { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_SubscriptionType___Type : IIntrospectionQuery___schema_SubscriptionType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IFullType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields>? Fields { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields>? InputFields { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces>? Interfaces { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_EnumValues>? EnumValues { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_PossibleTypes>? PossibleTypes { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types : IFullType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types___Type : IIntrospectionQuery___schema_Types
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
    /// 
    /// In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Directives
    {
        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives_Args> Args { get; }
        public global::System.Boolean OnOperation { get; }
        public global::System.Boolean OnFragment { get; }
        public global::System.Boolean OnField { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
    /// 
    /// In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Directives___Directive : IIntrospectionQuery___schema_Directives
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields
    {
        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Args> Args { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Type Type { get; }
        public global::System.Boolean IsDeprecated { get; }
        public global::System.String? DeprecationReason { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields___Field : IIntrospectionQuery___schema_Types_Fields
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IInputValue
    {
        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type Type { get; }
        /// <summary>
        /// A GraphQL-formatted string representing the default value for this input value.
        /// </summary>
        public global::System.String? DefaultValue { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_InputFields : IInputValue
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_InputFields___InputValue : IIntrospectionQuery___schema_Types_InputFields
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface ITypeRef
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces : ITypeRef
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces___Type : IIntrospectionQuery___schema_Types_Interfaces
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_EnumValues
    {
        public global::System.String Name { get; }
        public global::System.String? Description { get; }
        public global::System.Boolean IsDeprecated { get; }
        public global::System.String? DeprecationReason { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_EnumValues___EnumValue : IIntrospectionQuery___schema_Types_EnumValues
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_PossibleTypes : ITypeRef
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_PossibleTypes___Type : IIntrospectionQuery___schema_Types_PossibleTypes
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Directives_Args : IInputValue
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Directives_Args___InputValue : IIntrospectionQuery___schema_Directives_Args
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Args : IInputValue
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Args___InputValue : IIntrospectionQuery___schema_Types_Fields_Args
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Type : ITypeRef
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Type___Type : IIntrospectionQuery___schema_Types_Fields_Type
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_InputFields_Type : ITypeRef
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_InputFields_Type___Type : IIntrospectionQuery___schema_Types_InputFields_Type
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces_OfType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces_OfType___Type : IIntrospectionQuery___schema_Types_Interfaces_OfType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_PossibleTypes_OfType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_PossibleTypes_OfType___Type : IIntrospectionQuery___schema_Types_PossibleTypes_OfType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Directives_Args_Type : ITypeRef
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Directives_Args_Type___Type : IIntrospectionQuery___schema_Directives_Args_Type
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Args_Type : ITypeRef
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Args_Type___Type : IIntrospectionQuery___schema_Types_Fields_Args_Type
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Type_OfType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Fields_Type_OfType___Type : IIntrospectionQuery___schema_Types_Fields_Type_OfType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_InputFields_Type_OfType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_InputFields_Type_OfType___Type : IIntrospectionQuery___schema_Types_InputFields_Type_OfType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type : IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType
    {
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Kind { get; }
        public global::System.String? Name { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInterfaceGenerator
    /// <summary>
    /// The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.
    /// 
    /// Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type : IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType
    {
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.EnumGenerator
    /// <summary>
    /// An enum describing what kind of type a given `__Type` is.
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public enum __TypeKind
    {
        /// <summary>
        /// Indicates this type is a scalar.
        /// </summary>
        Scalar,
        /// <summary>
        /// Indicates this type is an object. `fields` and `interfaces` are valid fields.
        /// </summary>
        Object,
        /// <summary>
        /// Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.
        /// </summary>
        Interface,
        /// <summary>
        /// Indicates this type is a union. `possibleTypes` is a valid field.
        /// </summary>
        Union,
        /// <summary>
        /// Indicates this type is an enum. `enumValues` is a valid field.
        /// </summary>
        Enum,
        /// <summary>
        /// Indicates this type is an input object. `inputFields` is a valid field.
        /// </summary>
        InputObject,
        /// <summary>
        /// Indicates this type is a list. `ofType` is a valid field.
        /// </summary>
        List,
        /// <summary>
        /// Indicates this type is a non-null. `ofType` is a valid field.
        /// </summary>
        NonNull
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.EnumParserGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class __TypeKindSerializer : global::StrawberryShake.Serialization.IInputValueFormatter, global::StrawberryShake.Serialization.ILeafValueParser<global::System.String, __TypeKind>
    {
        public global::System.String TypeName => "__TypeKind";

        public __TypeKind Parse(global::System.String serializedValue)
        {
            return serializedValue switch
            {
                "SCALAR" => __TypeKind.Scalar,
                "OBJECT" => __TypeKind.Object,
                "INTERFACE" => __TypeKind.Interface,
                "UNION" => __TypeKind.Union,
                "ENUM" => __TypeKind.Enum,
                "INPUT_OBJECT" => __TypeKind.InputObject,
                "LIST" => __TypeKind.List,
                "NON_NULL" => __TypeKind.NonNull,
                _ => throw new global::StrawberryShake.GraphQLClientException($"String value '{serializedValue}' can't be converted to enum __TypeKind")};
        }

        public global::System.Object Format(global::System.Object? runtimeValue)
        {
            return runtimeValue switch
            {
                __TypeKind.Scalar => "SCALAR",
                __TypeKind.Object => "OBJECT",
                __TypeKind.Interface => "INTERFACE",
                __TypeKind.Union => "UNION",
                __TypeKind.Enum => "ENUM",
                __TypeKind.InputObject => "INPUT_OBJECT",
                __TypeKind.List => "LIST",
                __TypeKind.NonNull => "NON_NULL",
                _ => throw new global::StrawberryShake.GraphQLClientException($"Enum __TypeKind value '{runtimeValue}' can't be converted to string")};
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.OperationDocumentGenerator
    /// <summary>
    /// Represents the operation service of the IntrospectionQuery GraphQL operation
    /// <code>
    /// query IntrospectionQuery {
    ///   __schema {
    ///     __typename
    ///     queryType {
    ///       __typename
    ///       name
    ///     }
    ///     mutationType {
    ///       __typename
    ///       name
    ///     }
    ///     subscriptionType {
    ///       __typename
    ///       name
    ///     }
    ///     types {
    ///       __typename
    ///       ... FullType
    ///     }
    ///     directives {
    ///       __typename
    ///       name
    ///       description
    ///       args {
    ///         __typename
    ///         ... InputValue
    ///       }
    ///       onOperation
    ///       onFragment
    ///       onField
    ///     }
    ///   }
    /// }
    /// 
    /// fragment FullType on __Type {
    ///   kind
    ///   name
    ///   description
    ///   fields(includeDeprecated: true) {
    ///     __typename
    ///     name
    ///     description
    ///     args {
    ///       __typename
    ///       ... InputValue
    ///     }
    ///     type {
    ///       __typename
    ///       ... TypeRef
    ///     }
    ///     isDeprecated
    ///     deprecationReason
    ///   }
    ///   inputFields {
    ///     __typename
    ///     ... InputValue
    ///   }
    ///   interfaces {
    ///     __typename
    ///     ... TypeRef
    ///   }
    ///   enumValues(includeDeprecated: true) {
    ///     __typename
    ///     name
    ///     description
    ///     isDeprecated
    ///     deprecationReason
    ///   }
    ///   possibleTypes {
    ///     __typename
    ///     ... TypeRef
    ///   }
    /// }
    /// 
    /// fragment InputValue on __InputValue {
    ///   name
    ///   description
    ///   type {
    ///     __typename
    ///     ... TypeRef
    ///   }
    ///   defaultValue
    /// }
    /// 
    /// fragment TypeRef on __Type {
    ///   kind
    ///   name
    ///   ofType {
    ///     __typename
    ///     kind
    ///     name
    ///     ofType {
    ///       __typename
    ///       kind
    ///       name
    ///       ofType {
    ///         __typename
    ///         kind
    ///         name
    ///       }
    ///     }
    ///   }
    /// }
    /// </code>
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQueryQueryDocument : global::StrawberryShake.IDocument
    {
        private IntrospectionQueryQueryDocument()
        {
        }

        public static IntrospectionQueryQueryDocument Instance { get; } = new IntrospectionQueryQueryDocument();
        public global::StrawberryShake.OperationKind Kind => global::StrawberryShake.OperationKind.Query;
        public global::System.ReadOnlySpan<global::System.Byte> Body => "query IntrospectionQuery { __schema { __typename queryType { __typename name } mutationType { __typename name } subscriptionType { __typename name } types { __typename ... FullType } directives { __typename name description args { __typename ... InputValue } onOperation onFragment onField } } } fragment FullType on __Type { kind name description fields(includeDeprecated: true) { __typename name description args { __typename ... InputValue } type { __typename ... TypeRef } isDeprecated deprecationReason } inputFields { __typename ... InputValue } interfaces { __typename ... TypeRef } enumValues(includeDeprecated: true) { __typename name description isDeprecated deprecationReason } possibleTypes { __typename ... TypeRef } } fragment InputValue on __InputValue { name description type { __typename ... TypeRef } defaultValue } fragment TypeRef on __Type { kind name ofType { __typename kind name ofType { __typename kind name ofType { __typename kind name } } } }"u8;
        public global::StrawberryShake.DocumentHash Hash { get; } = new global::StrawberryShake.DocumentHash("sha1Hash", "5902e9f9fd92bc2e9785f0821db6ff925e660fde");

        public override global::System.String ToString()
        {
#if NETCOREAPP3_1_OR_GREATER
        return global::System.Text.Encoding.UTF8.GetString(Body);
#else
            return global::System.Text.Encoding.UTF8.GetString(Body.ToArray());
#endif
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.OperationServiceGenerator
    /// <summary>
    /// Represents the operation service of the IntrospectionQuery GraphQL operation
    /// <code>
    /// query IntrospectionQuery {
    ///   __schema {
    ///     __typename
    ///     queryType {
    ///       __typename
    ///       name
    ///     }
    ///     mutationType {
    ///       __typename
    ///       name
    ///     }
    ///     subscriptionType {
    ///       __typename
    ///       name
    ///     }
    ///     types {
    ///       __typename
    ///       ... FullType
    ///     }
    ///     directives {
    ///       __typename
    ///       name
    ///       description
    ///       args {
    ///         __typename
    ///         ... InputValue
    ///       }
    ///       onOperation
    ///       onFragment
    ///       onField
    ///     }
    ///   }
    /// }
    /// 
    /// fragment FullType on __Type {
    ///   kind
    ///   name
    ///   description
    ///   fields(includeDeprecated: true) {
    ///     __typename
    ///     name
    ///     description
    ///     args {
    ///       __typename
    ///       ... InputValue
    ///     }
    ///     type {
    ///       __typename
    ///       ... TypeRef
    ///     }
    ///     isDeprecated
    ///     deprecationReason
    ///   }
    ///   inputFields {
    ///     __typename
    ///     ... InputValue
    ///   }
    ///   interfaces {
    ///     __typename
    ///     ... TypeRef
    ///   }
    ///   enumValues(includeDeprecated: true) {
    ///     __typename
    ///     name
    ///     description
    ///     isDeprecated
    ///     deprecationReason
    ///   }
    ///   possibleTypes {
    ///     __typename
    ///     ... TypeRef
    ///   }
    /// }
    /// 
    /// fragment InputValue on __InputValue {
    ///   name
    ///   description
    ///   type {
    ///     __typename
    ///     ... TypeRef
    ///   }
    ///   defaultValue
    /// }
    /// 
    /// fragment TypeRef on __Type {
    ///   kind
    ///   name
    ///   ofType {
    ///     __typename
    ///     kind
    ///     name
    ///     ofType {
    ///       __typename
    ///       kind
    ///       name
    ///       ofType {
    ///         __typename
    ///         kind
    ///         name
    ///       }
    ///     }
    ///   }
    /// }
    /// </code>
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQueryQuery : global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery
    {
        private readonly global::StrawberryShake.IOperationExecutor<IIntrospectionQueryResult> _operationExecutor;
        private readonly global::System.Collections.Immutable.ImmutableArray<global::System.Action<global::StrawberryShake.OperationRequest>> _configure = global::System.Collections.Immutable.ImmutableArray<global::System.Action<global::StrawberryShake.OperationRequest>>.Empty;
        public IntrospectionQueryQuery(global::StrawberryShake.IOperationExecutor<IIntrospectionQueryResult> operationExecutor)
        {
            _operationExecutor = operationExecutor ?? throw new global::System.ArgumentNullException(nameof(operationExecutor));
        }

        private IntrospectionQueryQuery(global::StrawberryShake.IOperationExecutor<IIntrospectionQueryResult> operationExecutor, global::System.Collections.Immutable.ImmutableArray<global::System.Action<global::StrawberryShake.OperationRequest>> configure)
        {
            _operationExecutor = operationExecutor;
            _configure = configure;
        }

        global::System.Type global::StrawberryShake.IOperationRequestFactory.ResultType => typeof(IIntrospectionQueryResult);

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery With(global::System.Action<global::StrawberryShake.OperationRequest> configure)
        {
            return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IntrospectionQueryQuery(_operationExecutor, _configure.Add(configure));
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery WithRequestUri(global::System.Uri requestUri)
        {
            return With(r => r.ContextData["StrawberryShake.Transport.Http.HttpConnection.RequestUri"] = requestUri);
        }

        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery WithHttpClient(global::System.Net.Http.HttpClient httpClient)
        {
            return With(r => r.ContextData["StrawberryShake.Transport.Http.HttpConnection.HttpClient"] = httpClient);
        }

        public async global::System.Threading.Tasks.Task<global::StrawberryShake.IOperationResult<IIntrospectionQueryResult>> ExecuteAsync(global::System.Threading.CancellationToken cancellationToken = default)
        {
            var request = CreateRequest();
            foreach (var configure in _configure)
            {
                configure(request);
            }

            return await _operationExecutor.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
        }

        public global::System.IObservable<global::StrawberryShake.IOperationResult<IIntrospectionQueryResult>> Watch(global::StrawberryShake.ExecutionStrategy? strategy = null)
        {
            var request = CreateRequest();
            return _operationExecutor.Watch(request, strategy);
        }

        private global::StrawberryShake.OperationRequest CreateRequest()
        {
            return CreateRequest(null);
        }

        private global::StrawberryShake.OperationRequest CreateRequest(global::System.Collections.Generic.IReadOnlyDictionary<global::System.String, global::System.Object?>? variables)
        {
            return new global::StrawberryShake.OperationRequest(id: IntrospectionQueryQueryDocument.Instance.Hash.Value, name: "IntrospectionQuery", document: IntrospectionQueryQueryDocument.Instance, strategy: global::StrawberryShake.RequestStrategy.Default);
        }

        global::StrawberryShake.OperationRequest global::StrawberryShake.IOperationRequestFactory.Create(global::System.Collections.Generic.IReadOnlyDictionary<global::System.String, global::System.Object?>? variables)
        {
            return CreateRequest();
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.OperationServiceInterfaceGenerator
    /// <summary>
    /// Represents the operation service of the IntrospectionQuery GraphQL operation
    /// <code>
    /// query IntrospectionQuery {
    ///   __schema {
    ///     __typename
    ///     queryType {
    ///       __typename
    ///       name
    ///     }
    ///     mutationType {
    ///       __typename
    ///       name
    ///     }
    ///     subscriptionType {
    ///       __typename
    ///       name
    ///     }
    ///     types {
    ///       __typename
    ///       ... FullType
    ///     }
    ///     directives {
    ///       __typename
    ///       name
    ///       description
    ///       args {
    ///         __typename
    ///         ... InputValue
    ///       }
    ///       onOperation
    ///       onFragment
    ///       onField
    ///     }
    ///   }
    /// }
    /// 
    /// fragment FullType on __Type {
    ///   kind
    ///   name
    ///   description
    ///   fields(includeDeprecated: true) {
    ///     __typename
    ///     name
    ///     description
    ///     args {
    ///       __typename
    ///       ... InputValue
    ///     }
    ///     type {
    ///       __typename
    ///       ... TypeRef
    ///     }
    ///     isDeprecated
    ///     deprecationReason
    ///   }
    ///   inputFields {
    ///     __typename
    ///     ... InputValue
    ///   }
    ///   interfaces {
    ///     __typename
    ///     ... TypeRef
    ///   }
    ///   enumValues(includeDeprecated: true) {
    ///     __typename
    ///     name
    ///     description
    ///     isDeprecated
    ///     deprecationReason
    ///   }
    ///   possibleTypes {
    ///     __typename
    ///     ... TypeRef
    ///   }
    /// }
    /// 
    /// fragment InputValue on __InputValue {
    ///   name
    ///   description
    ///   type {
    ///     __typename
    ///     ... TypeRef
    ///   }
    ///   defaultValue
    /// }
    /// 
    /// fragment TypeRef on __Type {
    ///   kind
    ///   name
    ///   ofType {
    ///     __typename
    ///     kind
    ///     name
    ///     ofType {
    ///       __typename
    ///       kind
    ///       name
    ///       ofType {
    ///         __typename
    ///         kind
    ///         name
    ///       }
    ///     }
    ///   }
    /// }
    /// </code>
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IIntrospectionQueryQuery : global::StrawberryShake.IOperationRequestFactory
    {
        global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery With(global::System.Action<global::StrawberryShake.OperationRequest> configure);
        global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery WithRequestUri(global::System.Uri requestUri);
        global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery WithHttpClient(global::System.Net.Http.HttpClient httpClient);
        global::System.Threading.Tasks.Task<global::StrawberryShake.IOperationResult<IIntrospectionQueryResult>> ExecuteAsync(global::System.Threading.CancellationToken cancellationToken = default);
        global::System.IObservable<global::StrawberryShake.IOperationResult<IIntrospectionQueryResult>> Watch(global::StrawberryShake.ExecutionStrategy? strategy = null);
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ClientGenerator
    /// <summary>
    /// Represents the StarWarsIntrospectionClient GraphQL client
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class StarWarsIntrospectionClient : global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IStarWarsIntrospectionClient
    {
        private readonly global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery _introspectionQuery;
        public StarWarsIntrospectionClient(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery introspectionQuery)
        {
            _introspectionQuery = introspectionQuery ?? throw new global::System.ArgumentNullException(nameof(introspectionQuery));
        }

        public static global::System.String ClientName => "StarWarsIntrospectionClient";
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery IntrospectionQuery => _introspectionQuery;
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ClientInterfaceGenerator
    /// <summary>
    /// Represents the StarWarsIntrospectionClient GraphQL client
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial interface IStarWarsIntrospectionClient
    {
        global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryQuery IntrospectionQuery { get; }
    }
}

namespace StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State
{
    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultDataFactoryGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQueryResultFactory : global::StrawberryShake.IOperationResultDataFactory<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IntrospectionQueryResult>
    {
        private readonly global::StrawberryShake.IEntityStore _entityStore;
        public IntrospectionQueryResultFactory(global::StrawberryShake.IEntityStore entityStore)
        {
            _entityStore = entityStore ?? throw new global::System.ArgumentNullException(nameof(entityStore));
        }

        global::System.Type global::StrawberryShake.IOperationResultDataFactory.ResultType => typeof(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult);

        public IntrospectionQueryResult Create(global::StrawberryShake.IOperationResultDataInfo dataInfo, global::StrawberryShake.IEntityStoreSnapshot? snapshot = null)
        {
            if (snapshot is null)
            {
                snapshot = _entityStore.CurrentSnapshot;
            }

            if (dataInfo is IntrospectionQueryResultInfo info)
            {
                return new IntrospectionQueryResult(MapNonNullableIIntrospectionQuery___schema(info.__schema, snapshot));
            }

            throw new global::System.ArgumentException("IntrospectionQueryResultInfo expected.");
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema MapNonNullableIIntrospectionQuery___schema(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__SchemaData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema returnValue = default !;
            if (data.__typename.Equals("__Schema", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema___Schema(MapNonNullableIIntrospectionQuery___schema_QueryType(data.QueryType ?? throw new global::System.ArgumentNullException(), snapshot), MapIIntrospectionQuery___schema_MutationType(data.MutationType, snapshot), MapIIntrospectionQuery___schema_SubscriptionType(data.SubscriptionType, snapshot), MapNonNullableIIntrospectionQuery___schema_TypesNonNullableArray(data.Types ?? throw new global::System.ArgumentNullException(), snapshot), MapNonNullableIIntrospectionQuery___schema_DirectivesNonNullableArray(data.Directives ?? throw new global::System.ArgumentNullException(), snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_QueryType MapNonNullableIIntrospectionQuery___schema_QueryType(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_QueryType returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_QueryType___Type(data.Name);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_MutationType? MapIIntrospectionQuery___schema_MutationType(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (data is null)
            {
                return null;
            }

            IIntrospectionQuery___schema_MutationType returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_MutationType___Type(data.Name);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_SubscriptionType? MapIIntrospectionQuery___schema_SubscriptionType(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (data is null)
            {
                return null;
            }

            IIntrospectionQuery___schema_SubscriptionType returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_SubscriptionType___Type(data.Name);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types> MapNonNullableIIntrospectionQuery___schema_TypesNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __Types = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData child in list)
            {
                __Types.Add(MapNonNullableIIntrospectionQuery___schema_Types(child, snapshot));
            }

            return __Types;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types MapNonNullableIIntrospectionQuery___schema_Types(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, data.Description, MapIIntrospectionQuery___schema_Types_FieldsNonNullableArray(data.Fields, snapshot), MapIIntrospectionQuery___schema_Types_InputFieldsNonNullableArray(data.InputFields, snapshot), MapIIntrospectionQuery___schema_Types_InterfacesNonNullableArray(data.Interfaces, snapshot), MapIIntrospectionQuery___schema_Types_EnumValuesNonNullableArray(data.EnumValues, snapshot), MapIIntrospectionQuery___schema_Types_PossibleTypesNonNullableArray(data.PossibleTypes, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields>? MapIIntrospectionQuery___schema_Types_FieldsNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                return null;
            }

            var __Fields = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData child in list)
            {
                __Fields.Add(MapNonNullableIIntrospectionQuery___schema_Types_Fields(child, snapshot));
            }

            return __Fields;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields MapNonNullableIIntrospectionQuery___schema_Types_Fields(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_Fields returnValue = default !;
            if (data.__typename.Equals("__Field", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Fields___Field(data.Name ?? throw new global::System.ArgumentNullException(), data.Description, MapNonNullableIIntrospectionQuery___schema_Types_Fields_ArgsNonNullableArray(data.Args ?? throw new global::System.ArgumentNullException(), snapshot), MapNonNullableIIntrospectionQuery___schema_Types_Fields_Type(data.Type ?? throw new global::System.ArgumentNullException(), snapshot), data.IsDeprecated ?? throw new global::System.ArgumentNullException(), data.DeprecationReason);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Args> MapNonNullableIIntrospectionQuery___schema_Types_Fields_ArgsNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __InputValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Args>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData child in list)
            {
                __InputValues.Add(MapNonNullableIIntrospectionQuery___schema_Types_Fields_Args(child, snapshot));
            }

            return __InputValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Args MapNonNullableIIntrospectionQuery___schema_Types_Fields_Args(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_Fields_Args returnValue = default !;
            if (data.__typename.Equals("__InputValue", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Fields_Args___InputValue(data.Name ?? throw new global::System.ArgumentNullException(), data.Description, MapNonNullableIIntrospectionQuery___schema_Types_InputFields_Type(data.Type ?? throw new global::System.ArgumentNullException(), snapshot), data.DefaultValue);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields_Type MapNonNullableIIntrospectionQuery___schema_Types_InputFields_Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_InputFields_Type returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_InputFields_Type___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, MapIIntrospectionQuery___schema_Types_Interfaces_OfType(data.OfType, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType? MapIIntrospectionQuery___schema_Types_Interfaces_OfType(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (data is null)
            {
                return null;
            }

            IIntrospectionQuery___schema_Types_Interfaces_OfType returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Interfaces_OfType___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, MapIIntrospectionQuery___schema_Types_Interfaces_OfType_OfType(data.OfType, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType? MapIIntrospectionQuery___schema_Types_Interfaces_OfType_OfType(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (data is null)
            {
                return null;
            }

            IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Interfaces_OfType_OfType___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, MapIIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType(data.OfType, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType? MapIIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (data is null)
            {
                return null;
            }

            IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Fields_Type MapNonNullableIIntrospectionQuery___schema_Types_Fields_Type(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_Fields_Type returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Fields_Type___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, MapIIntrospectionQuery___schema_Types_Interfaces_OfType(data.OfType, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields>? MapIIntrospectionQuery___schema_Types_InputFieldsNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                return null;
            }

            var __InputValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData child in list)
            {
                __InputValues.Add(MapNonNullableIIntrospectionQuery___schema_Types_InputFields(child, snapshot));
            }

            return __InputValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_InputFields MapNonNullableIIntrospectionQuery___schema_Types_InputFields(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_InputFields returnValue = default !;
            if (data.__typename.Equals("__InputValue", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_InputFields___InputValue(data.Name ?? throw new global::System.ArgumentNullException(), data.Description, MapNonNullableIIntrospectionQuery___schema_Types_InputFields_Type(data.Type ?? throw new global::System.ArgumentNullException(), snapshot), data.DefaultValue);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces>? MapIIntrospectionQuery___schema_Types_InterfacesNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                return null;
            }

            var __Types = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData child in list)
            {
                __Types.Add(MapNonNullableIIntrospectionQuery___schema_Types_Interfaces(child, snapshot));
            }

            return __Types;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_Interfaces MapNonNullableIIntrospectionQuery___schema_Types_Interfaces(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_Interfaces returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_Interfaces___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, MapIIntrospectionQuery___schema_Types_Interfaces_OfType(data.OfType, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_EnumValues>? MapIIntrospectionQuery___schema_Types_EnumValuesNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                return null;
            }

            var __EnumValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_EnumValues>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData child in list)
            {
                __EnumValues.Add(MapNonNullableIIntrospectionQuery___schema_Types_EnumValues(child, snapshot));
            }

            return __EnumValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_EnumValues MapNonNullableIIntrospectionQuery___schema_Types_EnumValues(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_EnumValues returnValue = default !;
            if (data.__typename.Equals("__EnumValue", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_EnumValues___EnumValue(data.Name ?? throw new global::System.ArgumentNullException(), data.Description, data.IsDeprecated ?? throw new global::System.ArgumentNullException(), data.DeprecationReason);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_PossibleTypes>? MapIIntrospectionQuery___schema_Types_PossibleTypesNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                return null;
            }

            var __Types = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_PossibleTypes>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData child in list)
            {
                __Types.Add(MapNonNullableIIntrospectionQuery___schema_Types_PossibleTypes(child, snapshot));
            }

            return __Types;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Types_PossibleTypes MapNonNullableIIntrospectionQuery___schema_Types_PossibleTypes(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Types_PossibleTypes returnValue = default !;
            if (data.__typename.Equals("__Type", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Types_PossibleTypes___Type(data.Kind ?? throw new global::System.ArgumentNullException(), data.Name, MapIIntrospectionQuery___schema_Types_Interfaces_OfType(data.OfType, snapshot));
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives> MapNonNullableIIntrospectionQuery___schema_DirectivesNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __Directives = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData child in list)
            {
                __Directives.Add(MapNonNullableIIntrospectionQuery___schema_Directives(child, snapshot));
            }

            return __Directives;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives MapNonNullableIIntrospectionQuery___schema_Directives(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Directives returnValue = default !;
            if (data.__typename.Equals("__Directive", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Directives___Directive(data.Name ?? throw new global::System.ArgumentNullException(), data.Description, MapNonNullableIIntrospectionQuery___schema_Directives_ArgsNonNullableArray(data.Args ?? throw new global::System.ArgumentNullException(), snapshot), data.OnOperation ?? throw new global::System.ArgumentNullException(), data.OnFragment ?? throw new global::System.ArgumentNullException(), data.OnField ?? throw new global::System.ArgumentNullException());
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives_Args> MapNonNullableIIntrospectionQuery___schema_Directives_ArgsNonNullableArray(global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? list, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            if (list is null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __InputValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives_Args>();
            foreach (global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData child in list)
            {
                __InputValues.Add(MapNonNullableIIntrospectionQuery___schema_Directives_Args(child, snapshot));
            }

            return __InputValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQuery___schema_Directives_Args MapNonNullableIIntrospectionQuery___schema_Directives_Args(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData data, global::StrawberryShake.IEntityStoreSnapshot snapshot)
        {
            IIntrospectionQuery___schema_Directives_Args returnValue = default !;
            if (data.__typename.Equals("__InputValue", global::System.StringComparison.Ordinal))
            {
                returnValue = new IntrospectionQuery___schema_Directives_Args___InputValue(data.Name ?? throw new global::System.ArgumentNullException(), data.Description, MapNonNullableIIntrospectionQuery___schema_Types_InputFields_Type(data.Type ?? throw new global::System.ArgumentNullException(), snapshot), data.DefaultValue);
            }
            else
            {
                throw new global::System.NotSupportedException();
            }

            return returnValue;
        }

        global::System.Object global::StrawberryShake.IOperationResultDataFactory.Create(global::StrawberryShake.IOperationResultDataInfo dataInfo, global::StrawberryShake.IEntityStoreSnapshot? snapshot)
        {
            return Create(dataInfo, snapshot);
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.ResultInfoGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQueryResultInfo : global::StrawberryShake.IOperationResultDataInfo
    {
        private readonly global::System.Collections.Generic.IReadOnlyCollection<global::StrawberryShake.EntityId> _entityIds;
        private readonly global::System.UInt64 _version;
        public IntrospectionQueryResultInfo(global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__SchemaData __schema, global::System.Collections.Generic.IReadOnlyCollection<global::StrawberryShake.EntityId> entityIds, global::System.UInt64 version)
        {
            this.__schema = __schema;
            _entityIds = entityIds ?? throw new global::System.ArgumentNullException(nameof(entityIds));
            _version = version;
        }

        /// <summary>
        /// Access the current type schema of this server.
        /// </summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__SchemaData __schema { get; }
        public global::System.Collections.Generic.IReadOnlyCollection<global::StrawberryShake.EntityId> EntityIds => _entityIds;
        public global::System.UInt64 Version => _version;

        public global::StrawberryShake.IOperationResultDataInfo WithVersion(global::System.UInt64 version)
        {
            return new IntrospectionQueryResultInfo(__schema, _entityIds, version);
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.JsonResultBuilderGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class IntrospectionQueryBuilder : global::StrawberryShake.OperationResultBuilder<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult>
    {
        private readonly global::StrawberryShake.IEntityStore _entityStore;
        private readonly global::StrawberryShake.IEntityIdSerializer _idSerializer;
        private readonly global::StrawberryShake.Serialization.ILeafValueParser<global::System.String, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind> ___TypeKindParser;
        private readonly global::StrawberryShake.Serialization.ILeafValueParser<global::System.String, global::System.String> _stringParser;
        private readonly global::StrawberryShake.Serialization.ILeafValueParser<global::System.Boolean, global::System.Boolean> _booleanParser;
        public IntrospectionQueryBuilder(global::StrawberryShake.IEntityStore entityStore, global::StrawberryShake.IEntityIdSerializer idSerializer, global::StrawberryShake.IOperationResultDataFactory<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult> resultDataFactory, global::StrawberryShake.Serialization.ISerializerResolver serializerResolver)
        {
            _entityStore = entityStore ?? throw new global::System.ArgumentNullException(nameof(entityStore));
            _idSerializer = idSerializer ?? throw new global::System.ArgumentNullException(nameof(idSerializer));
            ResultDataFactory = resultDataFactory ?? throw new global::System.ArgumentNullException(nameof(resultDataFactory));
            ___TypeKindParser = serializerResolver.GetLeafValueParser<global::System.String, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind>("__TypeKind") ?? throw new global::System.ArgumentException("No serializer for type `__TypeKind` found.");
            _stringParser = serializerResolver.GetLeafValueParser<global::System.String, global::System.String>("String") ?? throw new global::System.ArgumentException("No serializer for type `String` found.");
            _booleanParser = serializerResolver.GetLeafValueParser<global::System.Boolean, global::System.Boolean>("Boolean") ?? throw new global::System.ArgumentException("No serializer for type `Boolean` found.");
        }

        protected override global::StrawberryShake.IOperationResultDataFactory<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.IIntrospectionQueryResult> ResultDataFactory { get; }

        protected override global::StrawberryShake.IOperationResultDataInfo BuildData(global::System.Text.Json.JsonElement obj)
        {
            var entityIds = new global::System.Collections.Generic.HashSet<global::StrawberryShake.EntityId>();
            global::StrawberryShake.IEntityStoreSnapshot snapshot = default !;
            _entityStore.Update(session =>
            {
                snapshot = session.CurrentSnapshot;
            });
            return new IntrospectionQueryResultInfo(Deserialize_NonNullableIIntrospectionQuery___schema(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "__schema")), entityIds, snapshot.Version);
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__SchemaData Deserialize_NonNullableIIntrospectionQuery___schema(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Schema", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__SchemaData(typename, queryType: Deserialize_NonNullableIIntrospectionQuery___schema_QueryType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "queryType")), mutationType: Deserialize_IIntrospectionQuery___schema_MutationType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "mutationType")), subscriptionType: Deserialize_IIntrospectionQuery___schema_SubscriptionType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "subscriptionType")), types: Deserialize_NonNullableIIntrospectionQuery___schema_TypesNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "types")), directives: Deserialize_NonNullableIIntrospectionQuery___schema_DirectivesNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "directives")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData Deserialize_NonNullableIIntrospectionQuery___schema_QueryType(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.String? Deserialize_String(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            return _stringParser.Parse(obj.Value.GetString()!);
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Deserialize_IIntrospectionQuery___schema_MutationType(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Deserialize_IIntrospectionQuery___schema_SubscriptionType(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData> Deserialize_NonNullableIIntrospectionQuery___schema_TypesNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __Types = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __Types.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types(child));
            }

            return __Types;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData Deserialize_NonNullableIIntrospectionQuery___schema_Types(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), fields: Deserialize_IIntrospectionQuery___schema_Types_FieldsNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "fields")), inputFields: Deserialize_IIntrospectionQuery___schema_Types_InputFieldsNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "inputFields")), interfaces: Deserialize_IIntrospectionQuery___schema_Types_InterfacesNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "interfaces")), enumValues: Deserialize_IIntrospectionQuery___schema_Types_EnumValuesNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "enumValues")), possibleTypes: Deserialize_IIntrospectionQuery___schema_Types_PossibleTypesNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "possibleTypes")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind Deserialize_NonNullable__TypeKind(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            return ___TypeKindParser.Parse(obj.Value.GetString()!);
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData>? Deserialize_IIntrospectionQuery___schema_Types_FieldsNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var __Fields = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __Fields.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields(child));
            }

            return __Fields;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Field", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData(typename, name: Deserialize_NonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), args: Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields_ArgsNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "args")), type: Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields_Type(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "type")), isDeprecated: Deserialize_NonNullableBoolean(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "isDeprecated")), deprecationReason: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "deprecationReason")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.String Deserialize_NonNullableString(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            return _stringParser.Parse(obj.Value.GetString()!);
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData> Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields_ArgsNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __InputValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __InputValues.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields_Args(child));
            }

            return __InputValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields_Args(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__InputValue", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData(typename, name: Deserialize_NonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), type: Deserialize_NonNullableIIntrospectionQuery___schema_Types_InputFields_Type(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "type")), defaultValue: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "defaultValue")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData Deserialize_NonNullableIIntrospectionQuery___schema_Types_InputFields_Type(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), ofType: Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "ofType")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), ofType: Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "ofType")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), ofType: Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "ofType")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType_OfType_OfType(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData Deserialize_NonNullableIIntrospectionQuery___schema_Types_Fields_Type(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), ofType: Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "ofType")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Boolean Deserialize_NonNullableBoolean(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            return _booleanParser.Parse(obj.Value.GetBoolean()!);
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? Deserialize_IIntrospectionQuery___schema_Types_InputFieldsNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var __InputValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __InputValues.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types_InputFields(child));
            }

            return __InputValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData Deserialize_NonNullableIIntrospectionQuery___schema_Types_InputFields(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__InputValue", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData(typename, name: Deserialize_NonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), type: Deserialize_NonNullableIIntrospectionQuery___schema_Types_InputFields_Type(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "type")), defaultValue: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "defaultValue")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? Deserialize_IIntrospectionQuery___schema_Types_InterfacesNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var __Types = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __Types.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types_Interfaces(child));
            }

            return __Types;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData Deserialize_NonNullableIIntrospectionQuery___schema_Types_Interfaces(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), ofType: Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "ofType")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData>? Deserialize_IIntrospectionQuery___schema_Types_EnumValuesNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var __EnumValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __EnumValues.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types_EnumValues(child));
            }

            return __EnumValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData Deserialize_NonNullableIIntrospectionQuery___schema_Types_EnumValues(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__EnumValue", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData(typename, name: Deserialize_NonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), isDeprecated: Deserialize_NonNullableBoolean(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "isDeprecated")), deprecationReason: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "deprecationReason")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? Deserialize_IIntrospectionQuery___schema_Types_PossibleTypesNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                return null;
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                return null;
            }

            var __Types = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __Types.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Types_PossibleTypes(child));
            }

            return __Types;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData Deserialize_NonNullableIIntrospectionQuery___schema_Types_PossibleTypes(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Type", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData(typename, kind: Deserialize_NonNullable__TypeKind(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "kind")), name: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), ofType: Deserialize_IIntrospectionQuery___schema_Types_Interfaces_OfType(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "ofType")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData> Deserialize_NonNullableIIntrospectionQuery___schema_DirectivesNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __Directives = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __Directives.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Directives(child));
            }

            return __Directives;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData Deserialize_NonNullableIIntrospectionQuery___schema_Directives(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__Directive", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData(typename, name: Deserialize_NonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), args: Deserialize_NonNullableIIntrospectionQuery___schema_Directives_ArgsNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "args")), onOperation: Deserialize_NonNullableBoolean(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "onOperation")), onFragment: Deserialize_NonNullableBoolean(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "onFragment")), onField: Deserialize_NonNullableBoolean(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "onField")));
            }

            throw new global::System.NotSupportedException();
        }

        private global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData> Deserialize_NonNullableIIntrospectionQuery___schema_Directives_ArgsNonNullableArray(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var __InputValues = new global::System.Collections.Generic.List<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>();
            foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray())
            {
                __InputValues.Add(Deserialize_NonNullableIIntrospectionQuery___schema_Directives_Args(child));
            }

            return __InputValues;
        }

        private global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData Deserialize_NonNullableIIntrospectionQuery___schema_Directives_Args(global::System.Text.Json.JsonElement? obj)
        {
            if (!obj.HasValue)
            {
                throw new global::System.ArgumentNullException();
            }

            if (obj.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)
            {
                throw new global::System.ArgumentNullException();
            }

            var typename = obj.Value.GetProperty("__typename").GetString();
            if (typename?.Equals("__InputValue", global::System.StringComparison.Ordinal) ?? false)
            {
                return new global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData(typename, name: Deserialize_NonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), type: Deserialize_NonNullableIIntrospectionQuery___schema_Types_InputFields_Type(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "type")), defaultValue: Deserialize_String(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "defaultValue")));
            }

            throw new global::System.NotSupportedException();
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.DataTypeGenerator
    ///<summary>A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.</summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "0.0.0.0")]
    public partial class __SchemaData
    {
        public __SchemaData(global::System.String __typename, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? queryType = default !, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? mutationType = default !, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? subscriptionType = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? types = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData>? directives = default !)
        {
            this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename));
            QueryType = queryType;
            MutationType = mutationType;
            SubscriptionType = subscriptionType;
            Types = types;
            Directives = directives;
        }

        public global::System.String __typename { get; }
        ///<summary>The type that query operations will be rooted at.</summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? QueryType { get; }
        ///<summary>If this server supports mutation, the type that mutation operations will be rooted at.</summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? MutationType { get; }
        ///<summary>If this server support subscription, the type that subscription operations will be rooted at.</summary>
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? SubscriptionType { get; }
        ///<summary>A list of all types supported by this server.</summary>
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? Types { get; }
        ///<summary>A list of all directives supported by this server.</summary>
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__DirectiveData>? Directives { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.DataTypeGenerator
    ///<summary>The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.Depending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.</summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "0.0.0.0")]
    public partial class __TypeData
    {
        public __TypeData(global::System.String __typename, global::System.String? name = default !, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind? kind = default !, global::System.String? description = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData>? fields = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? inputFields = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? interfaces = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData>? enumValues = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? possibleTypes = default !, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? ofType = default !)
        {
            this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename));
            Name = name;
            Kind = kind;
            Description = description;
            Fields = fields;
            InputFields = inputFields;
            Interfaces = interfaces;
            EnumValues = enumValues;
            PossibleTypes = possibleTypes;
            OfType = ofType;
        }

        public global::System.String __typename { get; }
        public global::System.String? Name { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.__TypeKind? Kind { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__FieldData>? Fields { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? InputFields { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? Interfaces { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__EnumValueData>? EnumValues { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData>? PossibleTypes { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? OfType { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.DataTypeGenerator
    ///<summary>A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.</summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "0.0.0.0")]
    public partial class __DirectiveData
    {
        public __DirectiveData(global::System.String __typename, global::System.String? name = default !, global::System.String? description = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? args = default !, global::System.Boolean? onOperation = default !, global::System.Boolean? onFragment = default !, global::System.Boolean? onField = default !)
        {
            this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename));
            Name = name;
            Description = description;
            Args = args;
            OnOperation = onOperation;
            OnFragment = onFragment;
            OnField = onField;
        }

        public global::System.String __typename { get; }
        public global::System.String? Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? Args { get; }
        public global::System.Boolean? OnOperation { get; }
        public global::System.Boolean? OnFragment { get; }
        public global::System.Boolean? OnField { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.DataTypeGenerator
    ///<summary>Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.</summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "0.0.0.0")]
    public partial class __FieldData
    {
        public __FieldData(global::System.String __typename, global::System.String? name = default !, global::System.String? description = default !, global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? args = default !, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? type = default !, global::System.Boolean? isDeprecated = default !, global::System.String? deprecationReason = default !)
        {
            this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename));
            Name = name;
            Description = description;
            Args = args;
            Type = type;
            IsDeprecated = isDeprecated;
            DeprecationReason = deprecationReason;
        }

        public global::System.String __typename { get; }
        public global::System.String? Name { get; }
        public global::System.String? Description { get; }
        public global::System.Collections.Generic.IReadOnlyList<global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__InputValueData>? Args { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Type { get; }
        public global::System.Boolean? IsDeprecated { get; }
        public global::System.String? DeprecationReason { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.DataTypeGenerator
    ///<summary>Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.</summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "0.0.0.0")]
    public partial class __InputValueData
    {
        public __InputValueData(global::System.String __typename, global::System.String? name = default !, global::System.String? description = default !, global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? type = default !, global::System.String? defaultValue = default !)
        {
            this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename));
            Name = name;
            Description = description;
            Type = type;
            DefaultValue = defaultValue;
        }

        public global::System.String __typename { get; }
        public global::System.String? Name { get; }
        public global::System.String? Description { get; }
        public global::StrawberryShake.CodeGeneration.CSharp.Integration.StarWarsIntrospection.State.__TypeData? Type { get; }
        ///<summary>A GraphQL-formatted string representing the default value for this input value.</summary>
        public global::System.String? DefaultValue { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.DataTypeGenerator
    ///<summary>One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.</summary>
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "0.0.0.0")]
    public partial class __EnumValueData
    {
        public __EnumValueData(global::System.String __typename, global::System.String? name = default !, global::System.String? description = default !, global::System.Boolean? isDeprecated = default !, global::System.String? deprecationReason = default !)
        {
            this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename));
            Name = name;
            Description = description;
            IsDeprecated = isDeprecated;
            DeprecationReason = deprecationReason;
        }

        public global::System.String __typename { get; }
        public global::System.String? Name { get; }
        public global::System.String? Description { get; }
        public global::System.Boolean? IsDeprecated { get; }
        public global::System.String? DeprecationReason { get; }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.EntityIdFactoryGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class StarWarsIntrospectionClientEntityIdFactory : global::StrawberryShake.IEntityIdSerializer
    {
        private static readonly global::System.Text.Json.JsonWriterOptions _options = new global::System.Text.Json.JsonWriterOptions()
        {
            Indented = false
        };
        public global::StrawberryShake.EntityId Parse(global::System.Text.Json.JsonElement obj)
        {
            global::System.String __typename = obj.GetProperty("__typename").GetString()!;
            return __typename switch
            {
                _ => throw new global::System.NotSupportedException()};
        }

        public global::System.String Format(global::StrawberryShake.EntityId entityId)
        {
            return entityId.Name switch
            {
                _ => throw new global::System.NotSupportedException()};
        }
    }

    // StrawberryShake.CodeGeneration.CSharp.Generators.StoreAccessorGenerator
    [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.0.0")]
    public partial class StarWarsIntrospectionClientStoreAccessor : global::StrawberryShake.StoreAccessor
    {
        public StarWarsIntrospectionClientStoreAccessor(global::StrawberryShake.IOperationStore operationStore, global::StrawberryShake.IEntityStore entityStore, global::StrawberryShake.IEntityIdSerializer entityIdSerializer, global::System.Collections.Generic.IEnumerable<global::StrawberryShake.IOperationRequestFactory> requestFactories, global::System.Collections.Generic.IEnumerable<global::StrawberryShake.IOperationResultDataFactory> resultDataFactories) : base(operationStore, entityStore, entityIdSerializer, requestFactories, resultDataFactories)
        {
        }
    }
}


